package com.lk.sys.dao;

import com.lk.sys.common.vo.SysUserDeptVo;
import com.lk.sys.entity.SysUsr;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

@Mapper
public interface SysUserDao {

    /**
     * 通过用户名称查询用户基本信息
     * @author Lukang
     * @date 2022/1/19 下午9:18
     * @param username
     * @return com.lk.sys.entity.SysUsr
     */
    @Select("select * from sys_users where username=#{username}")
    SysUsr findUserByUsername(String username);

    /**
     * 更新用户信息
     * @author Lukang
     * @date 2022/1/7 下午9:33
     * @param entity
     * @return int
     */
    int updateObject(SysUsr entity);

    /**
     * 基于用户id查询用户相关信息接口
     * @author Lukang
     * @date 2022/1/6 下午9:52
     * @param id
     * @return com.lk.sys.common.vo.SysUserDeptVo
     */
    SysUserDeptVo findObjectById(Long id);

    /**
     * 添加页面中数据持久化方法接口
     * @author Lukang
     * @date 2022/1/5 下午9:53
     * @param entity
     * @return int
     */
    int insertObject(SysUsr entity);
    /**
     * 启用禁用按钮功能
     * @author Lukang
     * @date 2022/1/5 下午9:52
     * @param id
     * @param valid
     * @param username
     * @return int
     */
    @Update("update sys_users set valid=#{valid}, modifiedUser=#{username}, modifiedTime=now() where id=#{id}")
    int validById(Long id, Integer valid, String username);

    /**
     * 基于查询条件(用户名)查询数据总数
     * @author Lukang
     * @date 2021/12/23 下午9:39
     * @param username
     * @return int
     */
    long getRowCount(String username);

    /**
     * 基于查询条件查询当前页面的数据
     * @author Lukang
     * @date 2021/12/23 下午9:42
     * @param username
     * @param startIndex
     * @param pageSize 
     * @return List<SysUserDeptVo>
     */
    List<SysUserDeptVo> findPageObjects(String username,
                                        Long startIndex,
                                        Integer pageSize);
}
